#ifndef SCENES_GAMESCENE_H
#define SCENES_GAMESCENE_H

#include <list>

#include "gdn/GDN.h"
#include "GameApplication.h"
#include "scenes/SceneGame.h"

class GameObject;

class GameScene : public gdn::Scene
{
	public:
		GameScene( GameApplication& theApp, SceneGame& theScene );

		virtual void Initialize();
		virtual void Terminate();

		virtual void Step();
		virtual void Step( gdn::Window& window ); // Only done to satisfy the inheritance.
		virtual void Step( gdn::Event& event );
		virtual void Draw( gdn::Window& window );

		GameApplication& App;
		SceneGame& Scene;

	protected:
		std::list< GameObject* > objects;

		virtual void SortObjectsByDepth();

		static bool DepthSorter( GameObject* obj1, GameObject* obj2 );
};

#endif // SCENES_GAMESCENE_H
